home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / starscape-logo.scm < prev    next >
Text File  |  2009-12-15  |  5KB  |  152 lines

  1. ;  Nova Starscape
  2. ;  Create a text effect that simulates an eerie alien glow around text
  3.  
  4. (define (apply-starscape-logo-effect img logo-layer size glow-color)
  5.  
  6.   (define (find-blend-coords w h)
  7.     (let* (
  8.           (denom (+ (/ w h) (/ h w)))
  9.           (bx    (/ (* -2 h) denom))
  10.           (by    (/ (* -2 w) denom))
  11.           )
  12.       (cons bx by)
  13.     )
  14.   )
  15.  
  16.   (define (find-nova-x-coord drawable x1 x2 y)
  17.     (let* (
  18.           (x 0)
  19.           (alpha 3)
  20.           (range (- x2 x1))
  21.           (min-clearance 5)
  22.           (val '())
  23.           (val-left '())
  24.           (val-right '())
  25.           (val-top '())
  26.           (val-bottom '())
  27.           (limit 100)
  28.           (clearance 0)
  29.           )
  30.  
  31.       (while (and (= clearance 0) (> limit 0))
  32.          (set! x (+ (rand range) x1))
  33.          (set! val (cadr (gimp-drawable-get-pixel drawable x y)))
  34.          (set! val-left (cadr (gimp-drawable-get-pixel drawable (- x min-clearance) y)))
  35.          (set! val-right (cadr (gimp-drawable-get-pixel drawable (+ x min-clearance) y)))
  36.          (set! val-top (cadr (gimp-drawable-get-pixel drawable x (- y min-clearance))))
  37.          (set! val-bottom (cadr (gimp-drawable-get-pixel drawable x (+ y min-clearance))))
  38.          (if (and (= (aref val alpha) 0) (= (aref val-left alpha) 0)
  39.                   (= (aref val-right alpha) 0) (= (aref val-top alpha) 0)
  40.                   (= (aref val-bottom alpha) 0)
  41.              )
  42.              (set! clearance 1)
  43.              (set! limit (- limit 1))
  44.          )
  45.       )
  46.       x
  47.     )
  48.   )
  49.  
  50.   (let* (
  51.         (border (/ size 4))
  52.         (grow (/ size 30))
  53.         (offx (* size 0.03))
  54.         (offy (* size 0.02))
  55.         (feather (/ size 4))
  56.         (shadow-feather (/ size 25))
  57.         (width (car (gimp-drawable-width logo-layer)))
  58.         (height (car (gimp-drawable-height logo-layer)))
  59.         (w (* (/ (- width (* border 2)) 2.0) 0.75))
  60.         (h (* (/ (- height (* border 2)) 2.0) 0.75))
  61.         (novay (* height 0.3))
  62.         (novax (find-nova-x-coord logo-layer (* width 0.2) (* width 0.8) novay))
  63.         (novaradius (/ (min height width) 7.0))
  64.         (cx (/ width 2.0))
  65.         (cy (/ height 2.0))
  66.         (bx (+ cx (car (find-blend-coords w h))))
  67.         (by (+ cy (cdr (find-blend-coords w h))))
  68.         (bg-layer (car (gimp-layer-new img width height RGB-IMAGE "Background" 100 NORMAL-MODE)))
  69.         (glow-layer (car (gimp-layer-new img width height RGBA-IMAGE "Glow" 100 NORMAL-MODE)))
  70.         (shadow-layer (car (gimp-layer-new img width height RGBA-IMAGE "Drop Shadow" 100 NORMAL-MODE)))
  71.         (bump-channel (car (gimp-channel-new img width height "Bump Map" 50 '(0 0 0))))
  72.         )
  73.  
  74.     (gimp-context-push)
  75.  
  76.     (gimp-selection-none img)
  77.     (script-fu-util-image-resize-from-layer img logo-layer)
  78.     (script-fu-util-image-add-layers img shadow-layer glow-layer bg-layer)
  79.     (gimp-image-add-channel img bump-channel 0)
  80.     (gimp-layer-set-lock-alpha logo-layer TRUE)
  81.  
  82.     (gimp-context-set-background '(0 0 0))
  83.     (gimp-edit-fill bg-layer BACKGROUND-FILL)
  84.     (gimp-edit-clear shadow-layer)
  85.     (gimp-edit-clear glow-layer)
  86.  
  87.     (gimp-selection-layer-alpha logo-layer)
  88.     (gimp-selection-grow img grow)
  89.     (gimp-selection-feather img feather)
  90.     (gimp-context-set-background glow-color)
  91.     (gimp-selection-feather img feather)
  92.     (gimp-edit-fill glow-layer BACKGROUND-FILL)
  93.  
  94.     (gimp-selection-layer-alpha logo-layer)
  95.     (gimp-selection-feather img shadow-feather)
  96.     (gimp-context-set-background '(0 0 0))
  97.     (gimp-selection-translate img offx offy)
  98.     (gimp-edit-fill shadow-layer BACKGROUND-FILL)
  99.  
  100.     (gimp-selection-none img)
  101.     (gimp-context-set-background '(31 31 31))
  102.     (gimp-context-set-foreground '(255 255 255))
  103.  
  104.     (gimp-edit-blend logo-layer FG-BG-RGB-MODE NORMAL-MODE
  105.              GRADIENT-BILINEAR 100 0 REPEAT-NONE FALSE
  106.              FALSE 0 0 TRUE
  107.              cx cy bx by)
  108.  
  109.     (plug-in-nova RUN-NONINTERACTIVE img glow-layer novax novay glow-color novaradius 100 0)
  110.  
  111.     (gimp-selection-all img)
  112.     (gimp-context-set-pattern "Stone")
  113.     (gimp-edit-bucket-fill bump-channel PATTERN-BUCKET-FILL NORMAL-MODE 100 0 FALSE 0 0)
  114.     (plug-in-bump-map RUN-NONINTERACTIVE img logo-layer bump-channel
  115.               135.0 45.0 4 0 0 0 0 FALSE FALSE 0)
  116.     (gimp-image-remove-channel img bump-channel)
  117.     (gimp-selection-none img)
  118.  
  119.     (gimp-context-pop)
  120.   )
  121. )
  122.  
  123. (define (script-fu-starscape-logo text size fontname glow-color)
  124.   (let* (
  125.         (img (car (gimp-image-new 256 256 RGB)))
  126.         (border (/ size 4))
  127.         (text-layer (car (gimp-text-fontname img -1 0 0 text border
  128.                                              TRUE size PIXELS fontname)))
  129.         )
  130.     (gimp-image-undo-disable img)
  131.     (apply-starscape-logo-effect img text-layer size glow-color)
  132.     (gimp-image-undo-enable img)
  133.     (gimp-display-new img)
  134.   )
  135. )
  136.  
  137. (script-fu-register "script-fu-starscape-logo"
  138.   _"Sta_rscape..."
  139.   _"Create a logo using a rock-like texture, a nova glow, and shadow"
  140.   "Spencer Kimball"
  141.   "Spencer Kimball"
  142.   "1997"
  143.   ""
  144.   SF-STRING     _"Text"               "Nova"
  145.   SF-ADJUSTMENT _"Font size (pixels)" '(150 1 1000 1 10 0 1)
  146.   SF-FONT       _"Font"               "Engraver"
  147.   SF-COLOR      _"Glow color"         '(28 65 188)
  148. )
  149.  
  150. (script-fu-menu-register "script-fu-starscape-logo"
  151.                          "<Image>/File/Create/Logos")
  152.